--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / backend / database / telephone.py
Displaying Raw • Download
meshchatx/src/backend/database/telephone.py a9cc4b996b8da8ff414e305825f372ca12dc138d (a9cc4b99) Text, 3.61 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72from T7ee787.T7ee787provider Tff7b72import Te6edf3DatabaseProvider
Tff7b72class T56d364TelephoneDAOTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3providerTb4b4b4: Te6edf3DatabaseProviderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffprovider Tff7b72= Te6edf3provider
Tff7b72def Td2a8ffadd_call_historyTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3remote_identity_hashTb4b4b4,
Te6edf3remote_identity_nameTb4b4b4,
Te6edf3is_incomingTb4b4b4,
Te6edf3statusTb4b4b4,
Te6edf3duration_secondsTb4b4b4,
Te6edf3timestampTb4b4b4,
Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787datetime Tff7b72import Te6edf3UTCTb4b4b4, Te6edf3datetime
Te6edf3now Tff7b72= Te6edf3datetimeTff7b72.Td2a8ffnowTb4b4b4(Te6edf3UTCTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
T8b949e"""
INSERT INTO call_history (
remote_identity_hash,
remote_identity_name,
is_incoming,
status,
duration_seconds,
timestamp,
created_at
) VALUES (?, ?, ?, ?, ?, ?, ?)
"""Tb4b4b4,
Tb4b4b4(
Te6edf3remote_identity_hashTb4b4b4,
Te6edf3remote_identity_nameTb4b4b4,
T79c0ff1 Tff7b72if Te6edf3is_incoming Tff7b72else T79c0ff0Tb4b4b4,
Te6edf3statusTb4b4b4,
Te6edf3duration_secondsTb4b4b4,
Te6edf3timestampTb4b4b4,
Te6edf3nowTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8ffget_call_historyTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3searchTff7b72=Tff7b72NoneTb4b4b4, Te6edf3limitTff7b72=T79c0ff10Tb4b4b4, Te6edf3offsetTff7b72=T79c0ff0Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3searchTb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
T8b949e"""
SELECT * FROM call_history
WHERE remote_identity_name LIKE ? OR remote_identity_hash LIKE ?
ORDER BY timestamp DESC LIMIT ? OFFSET ?
"""Tb4b4b4,
Tb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4, Te6edf3limitTb4b4b4, Te6edf3offsetTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM call_history ORDER BY timestamp DESC LIMIT ? OFFSET ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3limitTb4b4b4, Te6edf3offsetTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8ffclear_call_historyTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(Ta5d6ff"Ta5d6ffDELETE FROM call_historyTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffadd_call_recordingTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3remote_identity_hashTb4b4b4,
Te6edf3remote_identity_nameTb4b4b4,
Te6edf3filename_rxTb4b4b4,
Te6edf3filename_txTb4b4b4,
Te6edf3duration_secondsTb4b4b4,
Te6edf3timestampTb4b4b4,
Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787datetime Tff7b72import Te6edf3UTCTb4b4b4, Te6edf3datetime
Te6edf3now Tff7b72= Te6edf3datetimeTff7b72.Td2a8ffnowTb4b4b4(Te6edf3UTCTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
T8b949e"""
INSERT INTO call_recordings (
remote_identity_hash,
remote_identity_name,
filename_rx,
filename_tx,
duration_seconds,
timestamp,
created_at
) VALUES (?, ?, ?, ?, ?, ?, ?)
"""Tb4b4b4,
Tb4b4b4(
Te6edf3remote_identity_hashTb4b4b4,
Te6edf3remote_identity_nameTb4b4b4,
Te6edf3filename_rxTb4b4b4,
Te6edf3filename_txTb4b4b4,
Te6edf3duration_secondsTb4b4b4,
Te6edf3timestampTb4b4b4,
Te6edf3nowTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8ffget_call_recordingsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3searchTff7b72=Tff7b72NoneTb4b4b4, Te6edf3limitTff7b72=T79c0ff10Tb4b4b4, Te6edf3offsetTff7b72=T79c0ff0Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3searchTb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
T8b949e"""
SELECT * FROM call_recordings
WHERE remote_identity_name LIKE ? OR remote_identity_hash LIKE ?
ORDER BY timestamp DESC LIMIT ? OFFSET ?
"""Tb4b4b4,
Tb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4, Te6edf3limitTb4b4b4, Te6edf3offsetTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM call_recordings ORDER BY timestamp DESC LIMIT ? OFFSET ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3limitTb4b4b4, Te6edf3offsetTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8ffget_call_recordingTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3recording_idTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchoneTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM call_recordings WHERE id = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3recording_idTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8ffdelete_call_recordingTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3recording_idTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
Ta5d6ff"Ta5d6ffDELETE FROM call_recordings WHERE id = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3recording_idTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────